草庐IT

c++ - C++中auto_ptr的指针运算

全部标签

c# - 将指针数组转换为 IntPtr 数组

我被困在一个看似微不足道的任务上,需要你的帮助。我需要编写一个具有以下签名的方法:System.ArrayToIntPtrArray(System.Arraya)其中实际参数可以是任何pointertype的数组(例如int*[]、long**[]、void*[,])并返回具有相同形状的元素数组类型System.IntPtr具有与输入数组的元素相同的数值。问题是如果我事先不知道指针的类型,我不明白如何提取指针的数值。例如,如果我事先知道我的参数始终是void*[]类型,我可以按如下方式编写方法:unsafeIntPtr[]ToIntPtrArray(void*[]a){varresul

c# - Rx 运算符到不同的序列

重要:有关结果的描述和更多详细信息,请同时查看我的回答我需要对通常被复制的一系列对象/事件进行分组和过滤,并使用TimeSpan间隔对它们进行缓冲。我尝试用一​​些大理石图更好地解释它:X-X-X-X-X-Y-Y-Y-Z-Z-Z-Z-X-X-Y-Z-Z会产生X---Y---Z---X---Y---Z其中X、Y和Z是不同的事件类型,'---'表示间隔。此外,我还想通过一个关键属性来区分它在所有类型上都可用,因为它们有一个共同的基类:X,Y,Z:A并且A包含一个属性Key。使用符号X.a表示X.Key=a,最终示例将是:X.a-X.b-X.a-Y.b-Y.c-Z.a-Z.a-Z.c-Z.b

c# - F# 中使用的运算符 (-) 引发 C# 不支持指定方法的异常

我在F#中有一个使用(-)运算符的通用函数:letinlinesubab=a-b现在我从C#调用这个函数:inta=sub(4,1);这引发了一个错误:UnhandledException:System.NotSupportedException:Specifiedmethodisnotsupported.atProjA.MainClass.Main(System.String[]args)[0x00000]in:0[ERROR]FATALUNHANDLEDEXCEPTION:System.NotSupportedException:Specifiedmethodisnotsuppor

C# null 合并运算符返回 null

最近我的同事向我展示了一段无法正常工作的代码:publicclassSomeClass{privateIList_categories;publicvoidSetCategories(){_categories=GetCategories()??newList();DoSomethingElse();}publicIListGetCategories(){returnRetrieveCategories().Select(Something).ToList();}}(我知道运算符是多余的,因为linqToList将始终返回一个列表,但这就是代码的设置方式)。问题是_categories

c# - Linq 和相等运算符 : Expression of type 'System.Int32' cannot be used for parameter of type 'System.Object'

我试图重写C#中的相等(==)运算符来处理任何类型与自定义类型的比较(自定义类型实际上是null周围的包装器/框)。所以我有这个:internalsealedclassNothing{publicoverrideboolEquals(objectobj){if(obj==null||objisNothing)returntrue;elsereturnfalse;}publicstaticbooloperator==(objectx,Nothingy){if((x==null||xisNothing)&&(y==null||yisNothing))returntrue;returnfal

c# - 隐式运算符应该处理 null 吗?

我们有一个具有隐式字符串运算符的类型。它看起来像这样:publicclassFoo{readonlystring_value;Foo(stringvalue){_value=value;}publicstaticimplicitoperatorstring(Foofoo){returnfoo._value;}publicstaticimplicitoperatorFoo(stringfooAsText){returnnewFoo(fooAsText);}}我们刚刚遇到这样一种情况,其中传递给隐式运算符的实例是null。显然,我们以NullReferenceException结束。我认为

c# - XML 文档中的引用运算符

我想在中引用一个运算符XMLdocumentation标签,但我似乎找不到任何关于如何操作的提示。MSDNarticle在这个标签上只展示了一个引用方法的简单例子,并没有涉及可以引用的不同类型的成员。特别是,我想引用一个隐式转换运算符,但也欢迎引用运算符的一般规则。例子假设我们有一个简单的结构,我们为其定义了==,!=和隐式转换运算符:publicstructMyStructure{publicintValue{get;set;}publicstaticbooloperator==(MyStructurex,MyStructurey)=>x.Value==y.Value;publics

c# - 为什么 C# 5.0 await 关键字被列为运算符而不是修饰符?

MSDN库liststheawaitkeywordasanoperator.这对我来说似乎很奇怪-我以为它是一个修饰符,比如theasynckeyword.为什么这是一个运算符? 最佳答案 async是声明的修饰符。类似于public.await是一种使用异步运算符并对其执行某些操作的操作。类似于return.await不是修改放在它后面的内容,而是指定如何处理该操作。对比async实际上并没有修改任何东西,它只是标记一个特定的方法是async的样式(从语法的角度来看,最终的await执行了对方法结构的所有更改)。

c# - 结构指针(地址)和默认构造函数

获取C#结构的地址会导致默认构造函数调用吗?例如,我得到了这样的结构:[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructHEADER{publicbyteOPCODE;publicbyteLENGTH;}[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructS{publicHEADERHeader;publicintValue;}那么,当然,我不能这样做:Ss;//noconstructorcall,so...varv=s.Value;//compilererror:

c# - 重载的 false 运算符什么时候被执行,它有什么用?

我一直在寻找实际执行重载的false运算符的实际工作代码。Thisquestion(What'sthefalseoperatorinC#goodfor?)有点相同,但接受的答案链接到返回404错误的url。我也看过Howdoesoperatoroverloadingoftrueandfalsework?以及其他一些问题。我在几乎所有答案中发现的是,false仅在您使用短路和类似x&&y时才会执行。这被评估为T.false(x)?x:T.&(x,y).好的,所以我有以下代码。struct包含一个int并且如果int大于零则认为它自己为真。:publicstructMyStruct{pri